/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 * NuGat-API named Chameleon developed by Simon De Baets to Verimag.
 *
 */
package chameleon.model.NuGatStructure.fsm;

import chameleon.model.NuGatStructure.bdd.ClusterList;
import chameleon.model.NuGatStructure.enc.BddEnc;
import chameleon.gameSolver.NuGat.NuGatInterface;
import chameleon.model.NuGatStructure.utils.NodeList;
import chameleon.model.NuGatStructure.NuGatStructure;
import chameleon.model.NuGatStructure.utils.Set;
import com.sun.jna.Pointer;

/**
 * This class is a wrapper to the C struct FsmBuilder.c .
 * 
 * @author simon
 */
public class FsmBuilder extends NuGatStructure {
    
    public FsmBuilder (Pointer fsmBuilder, NuGatInterface nugat){
        super(fsmBuilder,nugat);
    }
    
    /**
     * 
     * @param BddEnc_ptr
     * @param NodeList_ptr_vars
     * @return Set_t 
     */
    
    public Set orderVarsList(BddEnc bddEnc ,
                                         NodeList vars){
        return new Set (nugat_.fsm_builder_order_vars_list(this.ptr(),
                bddEnc.ptr(), vars.ptr()),nugat_);
    }
    
    /**
     * 
     * @param BddEnc_ptr
     * @param Expr_ptr
     * @return 
     */
    public ClusterList clusterizeExpr(BddEnc bddEnc,
                                                   Pointer Expr_ptr){
        return new ClusterList(nugat_.fsm_builder_clusterize_expr(this.ptr(),
                bddEnc.ptr(), Expr_ptr), nugat_);
    }
    
}
